{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "GradientDescent.ipynb",
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "k869I5TUu1z8"
      },
      "source": [
        "# The Gradient Descent Algorithm to find the minima of a function!"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KONct1fFCphm"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OL-Bmn2HjoYZ"
      },
      "source": [
        "x = np.linspace(-10,10)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "vejoymD-jwYX"
      },
      "source": [
        "y = x**2 -2*x + 1"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QNr7PZDDjylG",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "outputId": "bcea9ba8-ab79-4433-afee-ae6fb398a1de"
      },
      "source": [
        "plt.plot(x,y)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc4bd81f390>]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 60
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8yH0ib_VkEm8"
      },
      "source": [
        "d = []\n",
        "def minima(f,t):\n",
        "  for i in range(len(f)-1):\n",
        "    diff = (f[i+1]-f[i])/(t[i+1]-t[i])\n",
        "    d.append(diff)\n",
        "  return d\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4yT8_KwklCd6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "outputId": "79968b3b-2744-49d5-f37a-bc94f124c8d2"
      },
      "source": [
        "dydx= minima(y,x)\n",
        "\n",
        "plt.plot(x,y,label='y v/s x')\n",
        "plt.plot(x[:-1],dydx,label='dy/dx v/s x')\n",
        "plt.legend()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7fc4bd77fba8>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 62
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TbyMwhvIowFK"
      },
      "source": [
        "Qualitatively - dy/dx crosses the x axis at ~2.4. exactly where y shows the minima."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eo669fJZl495"
      },
      "source": [
        "for v in range(len(dydx)):\n",
        "  if dydx[v]<0 and dydx[v+1]>0:\n",
        "    opt_index = v\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MYSgqpyCouZF"
      },
      "source": [
        "Let's check our logic:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zu9tonlGnvsb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "69ac2bef-d496-4cc7-c988-b1af28d67cce"
      },
      "source": [
        "print(dydx[opt_index],dydx[opt_index+1])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "-0.3673469387755102 0.4489795918367362\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5Jef6u4hnxIS",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "b3660009-2d3f-4b7a-c1c2-9d2f626f535d"
      },
      "source": [
        "opt_index"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "26"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 66
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Q3jwA10bqI2t",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "b3651592-f202-4c29-ee14-66af9f62f4e5"
      },
      "source": [
        "print(f'At x = {x[opt_index+1]} , y = {y[opt_index+1]}, which is the global minima as per the curve.')\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "At x = 1.0204081632653068 , y = 0.0004164931278634043, which is the global minima as per the curve.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mdVlDAGbsF_z"
      },
      "source": [
        "Hence, our optima (global minima) occurs at the index 27 , ie the value x = 1.02\n",
        "\n",
        "* Analytical Result - @ x=1.0  y= 0\n",
        "* Result of our (gradient descent) Algorithm code - @ x = 1.02 , y = 0.0004\n",
        "\n",
        "Hence, we can guess the minima with fair accuracy.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kOrPD23kuDmE"
      },
      "source": [
        "# **Applications-**\n",
        "The same concept and the code can be used as a MACHINE LEARNING algorithm, for example, in Linear Regression (y = a + bx) to find the optimum a and b by minimizing the 'cost function' ie, the 'sum of squared errors' using the above methodology. \n",
        "The same function y, can be replaced with the cost function (J)."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BT-NzTfFqMCs"
      },
      "source": [
        "#----End-----#\n",
        "# (divyanshu!)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iS60j-49uyuS"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}